home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / vol_300 / 310_02 / sim1.st < prev    next >
Text File  |  1990-04-18  |  1KB  |  64 lines

  1. "
  2.     Simple Minded simulation from Chapter 6 of book
  3. "
  4. Class Main
  5. [
  6.     main        | i |
  7.         i <- IceCreamStore new.
  8.         [i time < 25] whileTrue: [ i proceed ].
  9.         i reportProfits
  10. ]
  11.  
  12. Class Simulation
  13. | currentTime nextEvent nextEventTime |
  14. [
  15.     new
  16.         currentTime <- 0
  17. |
  18.  
  19.     time
  20.         ^ currentTime
  21. |
  22.     addEvent: event at: eventTime
  23.         nextEvent <- event.
  24.         nextEventTime <- eventTime
  25. |
  26.     proceed
  27.         currentTime <- nextEventTime.
  28.         self processEvent: nextEvent
  29. ]
  30.  
  31. Class IceCreamStore :Simulation
  32. | profit rand |
  33. [
  34.     new
  35.         profit <- 0.
  36.         rand <- Random new.
  37.         "rand randomize.  taken out so results remain the same"
  38.         self scheduleArrival
  39. |
  40.     scheduleArrival
  41.         self addEvent: Customer new
  42.             at: (self time + (rand randInteger: 5))
  43. |
  44.     processEvent: event
  45.         ('customer received at ', self time printString) print.
  46.         profit <- profit + ( event numberOfScoops * 0.17 ).
  47.         self scheduleArrival
  48. |
  49.     reportProfits
  50.         ('profits are ', profit printString) print
  51. ]
  52.  
  53. Class Customer
  54. | rand |
  55. [
  56.     new
  57.         (rand <- Random new) "--randomize (taken out)"
  58. |
  59.     numberOfScoops        | number |
  60.         number <- rand randInteger: 3.
  61.         ('customer has ', number printString , ' scoops ') print.
  62.         ^ number
  63. ]
  64.